home *** CD-ROM | disk | FTP | other *** search
/ The Great Turkey Cookbook / The Great Turkey cookbook.iso / cwfc.inc < prev    next >
Text File  |  1995-06-09  |  7KB  |  236 lines

  1. ''Ini File string resources
  2. GLOBAL INI$, INIPATH$
  3. GLOBAL SECT$
  4.  
  5. GLOBAL VIEW$
  6. GLOBAL EDIT$
  7. GLOBAL NUTRIT$
  8. GLOBAL SCHEDULE$
  9. GLOBAL SHOPPING$
  10. GLOBAL MENU$
  11. GLOBAL CWEXE$
  12. GLOBAL MCBEXE$
  13. GLOBAL szPrjDir$
  14. GLOBAL szSrcDir$
  15. GLOBAL szIconLabel$
  16.  
  17. GLOBAL DTField%
  18. GLOBAL EXEField%
  19. GLOBAL INIPRESENT%
  20.  
  21. ''Dialog ID's
  22. CONST IDS_NOTEXTEDITOR = 1
  23. CONST WELCOME       = 100
  24. CONST CB4_COPYINPROGRESS    = 121
  25. CONST ASKQUIT       = 200
  26. CONST DESTPATH      = 300
  27. CONST EXITFAILURE   = 400
  28. CONST EXITQUIT      = 600
  29. CONST EXITSUCCESS   = 700
  30. CONST APPHELP       = 900
  31. CONST NOFREESPACE   = 6300
  32. CONST BADPATH       = 6400
  33. CONST TOOFEWCOLORS  = 7100
  34. CONST MCB_DETECTED  = 108
  35. CONST MCB_HELP      = 109
  36. CONST STANDBY       = 110
  37. CONST SW_SHOWMAXIMIZED  = 3
  38. CONST MCB_OVERWRITE = 124
  39. CONST OLDMCB        = 126
  40. CONST NO_SYSTEMDAT  = 128
  41. ''CONST NOFREEFORMCB    = 129
  42. CONST NOFREEFORUPDATE   = 129
  43. CONST NOFREEFORFULL     = 134
  44. CONST NOMCB         = 130
  45. CONST NEWMCBHELP    = 131
  46. CONST MCBPATH       = 133
  47.  
  48. ''Bitmap ID
  49. CONST LOGO = 1
  50.  
  51. ''Function constants
  52. CONST CWSPACE   =   6000000
  53. CONST FULL      =   8100000
  54. CONST UPDATE    =   4600000
  55. GLOBAL MCBSPACE&
  56.  
  57. GLOBAL DEST$        ''Default destination directory.
  58. GLOBAL OPTCUR$      ''Option selection from option dialog.
  59. GLOBAL MCBDEST$     ''Destination path for Micro Cookbook files, if any.
  60. GLOBAL VER_DATE$
  61. GLOBAL MDLSSDLG$    ''Modeless dialog procedure name.
  62. GLOBAL LHD$         ''Local Hard Disk Value list
  63. GLOBAL SRCHDAT$
  64. GLOBAL SRCHEXE$
  65. GLOBAL VERFILE$
  66. GLOBAL CUIDLL$
  67. GLOBAL MCBPRESENT%
  68. GLOBAL MCBINSTMODE$
  69.  
  70. DECLARE SUB Install(szIconLabel$)
  71. DECLARE SUB SetIniToNewest (KEY$, INSTENTRY$)
  72. DECLARE SUB InsertExeName (PlcHldr$, EntryStr$, ExeName$)
  73.  
  74. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  75. DECLARE FUNCTION CheckForIni AS INTEGER
  76. DECLARE FUNCTION CheckForMcb AS INTEGER
  77. DECLARE FUNCTION MakeIni AS INTEGER
  78. DECLARE FUNCTION CheckIni(ENTRY$) AS STRING
  79. DECLARE FUNCTION McbInPath(szDir$) AS INTEGER
  80. DECLARE FUNCTION SetIni(KEY$, VALUE$) AS INTEGER
  81. DECLARE FUNCTION HashDate(DateStr$) AS LONG
  82.  
  83. FUNCTION CheckForIni STATIC AS INTEGER
  84.     IniSrch$ = FindFileInTree(INI$, GetWindowsDir)
  85.     IF IniSrch$ <> "" THEN
  86.         INIPATH$ = IniSrch$
  87.         CheckForIni% = True
  88.     ELSE
  89.         CheckForIni% = False
  90.     END IF
  91. END FUNCTION
  92.  
  93. FUNCTION MakeIni STATIC AS INTEGER
  94.     IniSrch$ = FindFileInTree(INI$, GetWindowsDir)
  95.  
  96.     IF IniSrch$="" THEN
  97.         InsertExeName "[CWEXE]", VIEW$, MakePath(DEST$, CWEXE$)
  98.         InsertExeName "[MCBEXE]", EDIT$, MakePath(MCBDEST$, MCBEXE$)
  99.         CreateSysIniKeyValue GetWindowsDir + INI$,SECT$,"Viewer",VIEW$, cmoVital
  100.         CreateSysIniKeyValue GetWindowsDir + INI$,SECT$,"Editor",EDIT$, cmoVital
  101.         CreateSysIniKeyValue GetWindowsDir + INI$,SECT$,"Nutrition",NUTRIT$, cmoVital
  102.         CreateSysIniKeyValue GetWindowsDir + INI$,SECT$,"Scheduler",SCHEDULE$, cmoVital
  103.         CreateSysIniKeyValue GetWindowsDir + INI$,SECT$,"Shopping",SHOPPING$, cmoVital
  104.         CreateSysIniKeyValue GetWindowsDir + INI$,SECT$,"Menu",MENU$, cmoVital
  105.         MakeIni% = True
  106.     ELSE
  107.         MakeIni% = False
  108.     END IF
  109.  
  110. END FUNCTION
  111.  
  112. FUNCTION CheckIni(KEY$) STATIC AS STRING
  113.     IF INIPRESENT% = False THEN
  114.         CheckIni$ = ""
  115.         EXIT FUNCTION
  116.     END IF
  117.  
  118.     IF KEY$<>"ALL" THEN
  119.         sz$ = GetIniKeyString(INIPATH$, SECT$, KEY$)
  120.         CheckIni$ = sz$
  121.     ELSE
  122.         sz$ = GetIniKeyString(INIPATH$, SECT$, VIEW$)
  123.         sz$ = sz$ + ";" + GetIniKeyString(INIPATH$, SECT$, EDIT$)
  124.         sz$ = sz$ + ";" + GetIniKeyString(INIPATH$, SECT$, NUTRIT$)
  125.         sz$ = sz$ + ";" + GetIniKeyString(INIPATH$, SECT$, SCHEDULE$)
  126.         sz$ = sz$ + ";" + GetIniKeyString(INIPATH$, SECT$, SHOPPING$)
  127.         sz$ = sz$ + ";" + GetIniKeyString(INIPATH$, SECT$, MENU$)
  128.         CheckIni$ = sz$
  129.     END IF
  130.  
  131. END FUNCTION
  132.  
  133. FUNCTION SetIni(KEY$, VALUE$) STATIC AS INTEGER
  134.     IF INIPRESENT% = False THEN
  135.         SetIni% = False
  136.         EXIT FUNCTION
  137.     END IF
  138.  
  139.     CreateSysIniKeyValue GetWindowsDir + INI$, SECT$, KEY$, VALUE$, cmoVital
  140.     SetIni% = True
  141. END FUNCTION
  142.  
  143. SUB SetIniToNewest (KEY$, INSTENTRY$) STATIC
  144.     sz$ = CheckIni(KEY$)
  145.     IF sz$ <> "" THEN
  146.         ViewTemp$ = GetNthFieldFromIniString(sz$, DTField%)
  147.         ViewDate& = HashDate(ViewTemp$)
  148.         IniStr$ = KEY$ + "=" + INSTENTRY$
  149.         CwTemp$ = GetNthFieldFromIniString(IniStr$, DTField%)
  150.         CwDate& = HashDate(CwTemp$)
  151.         IF CwDate& > ViewDate& THEN
  152.             i% = SetIni(KEY$, INSTENTRY$)
  153.         END IF
  154.     END IF
  155.  
  156. END SUB
  157.  
  158. FUNCTION CheckForMcb STATIC AS INTEGER
  159.     '' Does a check for the Micro Cookbook, first by doing a presence detection for resource file (CB40.DAT), then by
  160.     ''  extracting Date/Time info from the main executable (CB40.EXE) in the same directory. If present, a comparison is
  161.     ''  made to the Editor being installed.
  162.     '' Return Value:
  163.     ''  0 = Micro Cookbook not present.
  164.     ''  1 = Micro Cookbook present is older than the Editor to be installed (query user to update?)
  165.     ''  2 = Micro Cookbook present is the same as the version to be installed (update/overwrite)
  166.     ''  3 = Micro Cookbook present is newer than the editor to be installed (update/overwrite/abort install)
  167.  
  168.     sz$=UIStartDlg(CUIDLL$, STANDBY, MDLSSDLG$, 0, "")
  169.     i%=ShowWaitCursor()
  170.  
  171.     SetSymbolValue "LocalHardDrives",""
  172.     GetLocalHardDrivesList "LocalHardDrives"
  173.     LHD$ = GetSymbolValue ("LocalHardDrives")
  174.     NumHDDS% = (Len(LHD$)-5)/4 + 1
  175.     FOR Y%=1 TO NumHDDS%
  176.         MCBDEST$=FindFileInTree(SRCHDAT$,MID$(LHD$, 4 * Y% - 1, 1)+":\")
  177.         IF MCBDEST$ <> "" THEN
  178.             MCBDEST$=FindFileInTree(SRCHEXE$,MID$(LHD$, 4 * Y% - 1, 1)+":\")
  179.             IF MCBDEST$<>"" THEN
  180.                 MCBDSTR$ = GetDateOfFile(MCBDEST$)
  181.                 MCBDATE& = HashDate(MCBDSTR$)
  182.                 EDT$ = "Editor=" + EDIT$
  183.                 EDTDATE$ = GetNthFieldFromIniString(EDT$, DTField%)
  184.                 EDITRDATE& = HashDate(EDTDATE$)
  185.                 MCBDEST$ = MID$(MCBDEST$, 1, LEN(MCBDEST$) - LEN(SRCHEXE$) - 1)
  186.  
  187.                 IF MCBDATE& < EDITRDATE& THEN
  188.                     CheckForMcb% = 1
  189.                 END IF
  190.  
  191.                 IF MCBDATE& = EDITRDATE& THEN
  192.                     CheckForMcb% = 2
  193.                 END IF
  194.  
  195.                 IF MCBDATE& > EDITRDATE& THEN
  196.                     CheckForMcb% = 3
  197.                 END IF
  198.  
  199.                 EXIT FOR
  200.             END IF
  201.         END IF
  202.     NEXT Y%
  203.     UIPop 1
  204.     RestoreCursor i%
  205.  
  206.     IF MCBDEST$="" THEN
  207.         CheckForMcb% = 0
  208.     END IF
  209.  
  210. END FUNCTION
  211.  
  212. FUNCTION McbInPath(szDir$) STATIC AS INTEGER
  213.     IF FindFileInTree(SRCHDAT$, szDir$) <> "" THEN
  214.         McbInPath% = True
  215.     ELSE
  216.         McbInPath% = False
  217.     END IF
  218. END FUNCTION
  219.  
  220. FUNCTION HashDate(DateStr$) STATIC AS LONG
  221.     Result& = GetYearFromDate(DateStr$)
  222.     Result& = Result& * 10000
  223.     Result& = Result& + (GetMonthFromDate(DateStr$) * 100)
  224.     Result& = Result& + GetDayFromDate(DateStr$)
  225.     HashDate& = Result&
  226. END FUNCTION
  227.  
  228. SUB InsertExeName (PlcHldr$, EntryStr$, ExeName$) STATIC
  229.     i% = InStr(EntryStr$, PlcHldr$)
  230.     IF i% > 0 THEN
  231.         j% = i% + LEN(PlcHldr$)
  232.         First$ = MID$(EntryStr$, 1, i% - 1)
  233.         Sec$ = MID$(EntryStr$, j%, LEN(EntryStr$) - j%)
  234.         EntryStr$ = First$ + ExeName$ + Sec$
  235.     END IF
  236. END SUB